草庐IT

Java String.split 内存泄漏?

全部标签

windows - 关于内存转储的问题

我目前正在尝试设计一个内存转储工具,它可以从另一个进程中获取崩溃进程的内存转储。但我对此完全陌生,我想借此机会深入了解内存转储技术。我想知道为崩溃进程创建内存转储的工作范例。我目前的天马行空的想象如下:当一个进程崩溃时,操作系统总是会知道(我不知道如何但它应该能够)。然后操作系统启动某种机制将崩溃进程的虚拟地址空间的内容复制到所谓的转储文件中。然后我们可以使用WinDbg对转储文件进行调试。我想知道,如果我们可以将崩溃进程的整个虚拟地址空间复制到转储文件中,文件会不会太大?或者我们可以指定要转储的虚拟地址空间(内核/用户)吗?任何人都可以提供一些引用资料供我开始使用,尤其是在以下方面:

windows - 使用命名管道(或其他东西)作为内存文件

我已经浏览了WinAPI文档一段时间了,但我似乎无法找到答案。我想要实现的是给程序一个文件名,它可以打开并使用它,就像磁盘上的普通文件一样。但是我希望这个对象在内存中。我尝试使用命名管道,它们在某些情况下有效,但并非总是如此。我创建了一个命名管道并将其作为常规文件传递给子进程。当进程存在时,我从管道收集数据。program.exe\\.\pipe\input_pipe虽然面临一些限制。其中之一是它们不可搜索。第二个限制是它们应该以完全正确的权限打开。我发现的第三个是,在另一端打开之前,您不能将任何数据预先放入双工管道中。有没有办法克服命名管道的这些限制?或者可能有一些其他类型的对象可以

c++ - 推荐内存占用小的快速 C++ UI 库

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我想编写一个对全局快捷方式使用react并接受命令的应用程序(launchy的方式)。我正在尽量缩短按下快捷方式与窗口出现在屏幕上并完全运行之间的时间。您能否推荐一个有用的优秀UI库(带有一些论证)?我查看了QT和wxWidget,但我担心应用程序会变得很重(在内存/处理速度方面)——我需要的只是一个甚至不需要漂​​亮的小窗口。..还是我应该使用nativeWindo

c++ - 在 Windows 上释放 C++ 'new' 保留的虚拟内存

我正在编写一个具有两阶段输入过程的32位.NET程序:它通过C++/CLI使用nativeC++将不定数量的文件解析为相应的SQLite数据库(都具有相同的架构)。C++"new"的分配通常会占用最多1GB的虚拟地址空间(超过2GB的可用空间;我知道3GB的扩展,但这只会延迟问题)。它使用复杂的SQL查询(从C#运行)将数据库合并为一个数据库。我将合并数据库的cache_size设置为1GB,以便合并部分的页面错误最少。我的问题是,第2阶段的缓存不会重新使用由“new”分配并在第1阶段由“delete”正确释放的1GB内存。我知道没有泄漏,因为在离开第1阶段后,'私有(private)

windows - win32自定义内存管理有什么限制?

因此32位程序中的可寻址内存空间为4GB。相应地,在64位应用程序中,有大约18艾字节的可寻址空间。kernel32.dllAPI有多种关于程序堆和/或内存的方法。所以我目前的理解是,例如,如果你调用HeapAlloc并将你需要分配的内存量传递给它,它将返回一个指向该分配内存空间地址的指针......(如果我'不过我在这里错了。)现在为此使用win32-api函数的优势显然是Windows最清楚它放置其他组件(如加载的DLL)的位置。这就是为什么我要问...DLL文件在内存中是否有固定位置。我想我在某处读到,对于32位,它通常是内存空间的上半部分(0x80000000及以上),但即使这

windows - 为什么堆栈低于内存中的文本?

我正在使用Windbg来研究进程内存,不禁注意到一些人们刚刚接受的东西。打印寄存器时:eax=00000000ebx=008b6f00ecx=01010101edx=ffffffffesi=00000000edi=00465000eip=77f9d022esp=05cffc48ebp=05cffc54iopl=0nvupeingnznaponccs=001bss=0023ds=0023es=0023fs=0038gs=0000efl=00000286请注意ESP和EBP的值低于EIP,这意味着堆栈在某处低于进程的文本部分(!?)。为什么是这样?据我所知(我在Linux中也用gdb做过同

windows - 如何在 DLL 中查找特定指令的内存地址

如何找到特定指令的内存地址(用于编写漏洞利用程序)?具体来说,我正在寻找user32.dll中的callebp指令,在没有ServicePack的WindowsXP上,我可以指向其地址EIP到。我有两个ImmunityDebugger和OllyDBG安装在目标上。 最佳答案 要找到一条指令,您需要找出代码、.text、部分的开始和结束位置,然后加载DLL并进行线性搜索,直到找到该指令。这里我们有一个测试DLL,它有两条callebp指令://test.c//gcc-Wall-sharedtest.c-otest.dll#includ

windows - 如何在批处理脚本中使用 WMIC 获取内存利用率百分比?

我没有在仅使用WMIC的批处理脚本中获得内存利用率百分比的结果。我只获得总内存和空闲内存(以字节为单位)。那么如何获得以兆字节为单位的数据以及如何计算内存利用率百分比?代码:-@echooffsetlocalenabledelayedexpansionsetTimes=0for/f"skip=1"%%pin('wmiccpugetloadpercentage')do(setCpusage!Times!=%%pset/ATimes+=1)echoCPUPercentage=%Cpusage0%%%setTimes=0for/f"skip=1"%%pin('wmicComputerSyst

windows - 如何让程序使用虚拟内存?

如何让程序在Windows中使用虚拟内存?我有一个很长的perl脚本,它正在使用6GB+内存并且还在增加。我的机器只有8GB或RAM。这可能是模块内存泄漏引起的,但我现在无能为力。是否可以让它使用虚拟内存,或者这是否仅由Windows控制? 最佳答案 操作系统将根据需要自动提供虚拟内存,如果它被配置为具有交换空间。您无法通过Perl程序控制它。如果您的Perl程序最终发生内存泄漏,它将开始被交换到页面文件。当它的内存消耗导致总内存超过物理RAM加上页面文件的总和时,事情会变得缓慢,进程可能会变得无响应和/或崩溃。无论如何,页面文件的

c++ - Windows 10 是否会防止您访问其他程序正在使用的内存?

以下C++代码有效:int*p=newint;p[1000]=12;意思是我访问了一个距离psizeof(int)*1000字节的内存位置。我在想,也许Windows或任何其他程序当前正在使用内存位置&p[1000]做某事。如果我厌倦了将p[1000]设置为新值,那么可能正在使用该位置保存一些内存的另一个程序甚至Windows可能会崩溃,因为我更改了该程序的一个重要变量。由于C++不禁止这样做,我想知道至少Windows是否有某种保护措施来防止程序使用其他人当前使用的内存位置。 最佳答案 在Windows(和所有其他现代消费者操作系